﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace RAD.LightOne
{
    #region Documentation
    /// <summary>
    /// Implementação de metadados para identificação de ID da classe MyObject ou que herde desta.
    /// </summary>
    #endregion
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct ,AllowMultiple=false,Inherited=true)]
    public sealed class IdAttribute : FieldNameAttribute
    {
        #region Constructors

        public IdAttribute() : base("id", KeyField.ID) { }

        public IdAttribute(string fieldName) : base(fieldName, KeyField.ID) { }

        #endregion

        #region Methods

        #region Documentation
        /// <summary>
        /// Verifica se o atributo foi atribuido a um membro de classe.
        /// </summary>
        /// <param name="type">tipo a ser analisado.</param>
        /// <returns>Definido=true</returns>
        #endregion
        public new static bool IsDefined(Type type)
        {
            return FieldNameAttribute.IsDefined<IdAttribute>(type);
        }

        public new static IdAttribute GetDefinedAttribute(Type type)
        {
            return FieldNameAttribute.GetDefinedAttribute<IdAttribute>(type);
        }

        #endregion
    }
}
